<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->


<html>
    <head>
        <meta charset="utf-8">
        <script src="lib/esl.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
        <script src="lib/facePrint.js"></script>
        <script src="data/pie-texture.js"></script>
        <script src="data/symbols.js"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="stylesheet" href="lib/reset.css">
    </head>
    <body>
        <style>
            body {
            }
            .chart {
                position: relative;
                height: 500px;
                max-width: 1000px;
                margin: 0 auto;
            }
            h2 {
                text-align: center;
                font-size: 16px;
                line-height: 30px;
                font-weight: normal;
                background: #dde;
                margin: 0;
            }
            strong {
                color: #971f3c;
            }
        </style>

        <h2>repeatDirection | dynamic</h2>
        <div class="chart" id="paper-and-hill"></div>
        <h2>texture</h2>
        <div class="chart" id="texture"></div>
        <h2>horizontal | no clip | symbolOffset</h2>
        <div class="chart" id="velocity"></div>
        <h2>clip</h2>
        <div class="chart" id="clip"></div>
        <h2>dotted | gradient</h2>
        <div class="chart" id="dotted"></div>

        <script>

            function makeChart(id, option, cb) {
                require([
                    'echarts'
                    // 'echarts/chart/pictorialBar',
                    // 'echarts/chart/bar',
                    // 'echarts/chart/line',
                    // 'echarts/chart/scatter',
                    // 'echarts/component/grid',
                    // 'echarts/component/legend',
                    // 'echarts/component/markLine',
                    // 'echarts/component/tooltip',
                    // 'echarts/component/dataZoom'
                ], function (echarts) {

                    if (typeof option === 'function') {
                        option = option(echarts);
                    }

                    var main = document.getElementById(id);
                    if (main) {
                        var chartMain = document.createElement('div');
                        chartMain.style.cssText = 'height:100%';
                        main.appendChild(chartMain);
                        var chart = echarts.init(chartMain);
                        chart.setOption(option);

                        window.addEventListener('resize', chart.resize);

                        cb && cb(echarts, chart);
                    }

                });
            }

        </script>





















        <script>

            makeChart('paper-and-hill', {
                backgroundColor: '#0f375f',
                tooltip: {},
                legend: {
                    data: ['all'],
                    textStyle: {color: '#ddd'}
                },
                xAxis: [{
                    data: ['圣诞节儿童愿望清单', '', '珠穆朗玛', '乞力马扎罗'],
                    axisTick: {show: false},
                    axisLine: {show: false},
                    axisLabel: {
                        margin: 20,
                        textStyle: {
                            color: '#ddd',
                            fontSize: 14
                        }
                    }
                }],
                yAxis: {
                    splitLine: {show: false},
                    axisTick: {show: false},
                    axisLine: {show: false},
                    axisLabel: {show: false}
                },
                markLine: {
                    z: -1
                },
                animationEasing: 'elasticOut',
                series: [{
                    type: 'pictorialBar',
                    name: 'all',
                    hoverAnimation: true,
                    label: {
                        normal: {
                            show: true,
                            position: 'top',
                            formatter: '{c} m',
                            textStyle: {
                                fontSize: 16,
                                color: '#e54035'
                            }
                        }
                    },
                    data: [{
                        value: 13000,
                        symbol: imageSymbols.paper,
                        symbolRepeat: true,
                        symbolSize: ['130%', '20%'],
                        symbolOffset: [0, 10],
                        symbolMargin: '-30%',
                        animationDelay: function (dataIndex, params) {
                            return params.index * 30;
                        }
                    }, {
                        value: '-',
                        symbol: 'none',
                    }, {
                        value: 8844,
                        symbol: 'image://./data/hill-Qomolangma.png',
                        symbolSize: ['200%', '105%'],
                        symbolPosition: 'end',
                        z: 10
                    }, {
                        value: 5895,
                        symbol: 'image://./data/hill-Kilimanjaro.png',
                        symbolSize: ['200%', '105%'],
                        symbolPosition: 'end'
                    }],
                    markLine: {
                        symbol: ['none', 'none'],
                        label: {
                            normal: {show: false}
                        },
                        lineStyle: {
                            normal: {
                                color: '#e54035',
                                width: 2
                            }
                        },
                        data: [{
                            yAxis: 8844
                        }]
                    }
                }, {
                    name: 'all',
                    type: 'pictorialBar',
                    symbol: 'circle',
                    itemStyle: {
                        normal: {
                            color: '#185491'
                        }
                    },
                    silent: true,
                    symbolOffset: [0, '50%'],
                    z: -10,
                    data: [{
                        value: 1,
                        symbolSize: ['150%', 50]
                    }, {
                        value: '-'
                    }, {
                        value: 1,
                        symbolSize: ['200%', 50]
                    }, {
                        value: 1,
                        symbolSize: ['200%', 50]
                    }]
                }]
            });
        </script>























        <script>

            var img = new Image();
            img.src = window.pieTexture;

            makeChart('texture', {
                backgroundColor: '#13978b',
                tooltip: {},
                xAxis: {
                    data: ['a', 'b', 'c'],
                    axisTick: {show: false}
                },
                yAxis: {
                    splitLine: {show: false},
                    axisTick: {show: false}
                },
                animationEasing: 'elasticOut',
                series: [{
                    name: 'all',
                    type: 'pictorialBar',
                    barCategoryGap: '40%',
                    label: {
                        normal: {
                            show: true,
                            position: 'top',
                            textStyle: {
                                color: '#e54035'
                            }
                        }
                    },
                    hoverAnimation: true,
                    data: [{
                        value: 8844,
                        symbol: 'circle',
                        label: {
                            normal: {formatter: 'symbolPatternSize: default'}
                        },
                        itemStyle: {
                            normal: {
                                color: {
                                    image: img,
                                    repeat: 'repeat'
                                }
                            }
                        }
                    }, {
                        value: 8844,
                        symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
                        label: {
                            normal: {formatter: 'symbolPatternSize: 800'}
                        },
                        symbolPatternSize: 800,
                        itemStyle: {
                            normal: {
                                color: {
                                    image: img,
                                    repeat: 'repeat'
                                }
                            }
                        }
                    }, {
                        value: 8844,
                        symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
                        label: {
                            normal: {formatter: 'symbolPatternSize: 50'}
                        },
                        symbolPatternSize: 50,
                        itemStyle: {
                            normal: {
                                color: {
                                    image: img,
                                    repeat: 'repeat'
                                }
                            }
                        }
                    }]
                }]
            });
        </script>














        <script>

            var rawData = [
                {name: '驯鹿', velocity: 123, symbol: 'reindeer'},
                {name: '火箭', velocity: 60, symbol: 'rocket'},
                {name: '飞机', velocity: 25, symbol: 'plane'},
                {name: '高铁', velocity: 18, symbol: 'train'},
                {name: '轮船', velocity: 12, symbol: 'ship'},
                {name: '汽车', velocity: 9, symbol: 'car'},
                {name: '跑步', velocity: 2, symbol: 'run'},
                {name: '步行', velocity: 1, symbol: 'walk'}
            ];

            // 真实数据：
            // {name: '驯鹿', velocity: 4705882, symbol: 'reindeer'},
            // {name: '火箭', velocity: 38880, symbol: 'thunder'},
            // {name: '飞机', velocity: 1028, symbol: 'plane'},
            // {name: '高铁', velocity: 300, symbol: 'train'},
            // {name: '汽车', velocity: 60, symbol: 'car'},
            // {name: '轮船', velocity: 30, symbol: 'ship'},
            // {name: '跑步', velocity: 15, symbol: 'run'},
            // {name: '步行', velocity: 5, symbol: 'walk'}

            makeChart('velocity', {
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'none'
                    }
                },
                xAxis: {
                    data: rawData.map(function (item) {
                        return item.name;
                    }),
                    axisTick: {show: false},
                    axisLine: {show: false},
                    axisLabel: {
                        textStyle: {
                            color: '#e54035'
                        }
                    }
                },
                yAxis: {
                    splitLine: {show: false},
                    axisTick: {show: false},
                    axisLine: {show: false},
                    axisLabel: {show: false}
                },
                color: ['#e54035'],
                series: [{
                    name: 'hill',
                    type: 'pictorialBar',
                    barCategoryGap: '-50%',
                    symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
                    itemStyle: {
                        normal: {
                            opacity: 0.5
                        },
                        emphasis: {
                            opacity: 1
                        }
                    },
                    data: rawData.map(function (item) {
                        return item.velocity;
                    }),
                    z: 10
                }, {
                    name: 'glyph',
                    type: 'pictorialBar',
                    symbolPosition: 'end',
                    symbolSize: [25, 25],
                    symbolOffset: [0, -35],
                    itemStyle: {
                        emphasis: {
                            color: 'green'
                        }
                    },
                    data: rawData.map(function (item) {
                        return {
                            value: item.velocity,
                            symbol: pathSymbols[item.symbol]
                        };
                    })
                }]
            });
        </script>













        <script>

            function getBodyImage(index) {
                return pathSymbols['body' + index];
            }

            var bodyMax = 150;

            makeChart('clip', {
                tooltip: {
                },
                legend: {
                    data: ['typeA', 'typeB'],
                    selectedMode: 'single'
                },
                xAxis: {
                    data: ['a', 'b', 'c', 'd', 'e'],
                    axisTick: {show: false},
                    axisLine: {show: false},
                    axisLabel: {
                        textStyle: {
                            color: '#e54035'
                        }
                    }
                },
                yAxis: {
                    max: bodyMax,
                    splitLine: {show: false}
                },
                grid: {
                    left: 'center',
                    top: 100,
                    width: 800,
                    height: 230
                },
                series: [{
                    name: 'typeA',
                    type: 'pictorialBar',
                    symbolClip: true,
                    symbolBoundingData: bodyMax,
                    data: [{
                        value: 123,
                        symbol: getBodyImage(0)
                    }, {
                        value: 34,
                        symbol: getBodyImage(1)
                    }, {
                        value: 101,
                        symbol: getBodyImage(2)
                    }, {
                        value: 89,
                        symbol: getBodyImage(3)
                    }, {
                        value: 72,
                        symbol: getBodyImage(4)
                    }],
                    z: 10
                }, {
                    name: 'typeB',
                    type: 'pictorialBar',
                    symbolClip: true,
                    symbolBoundingData: bodyMax,
                    data: [{
                        value: 12,
                        symbol: getBodyImage(0)
                    }, {
                        value: 44,
                        symbol: getBodyImage(1)
                    }, {
                        value: 131,
                        symbol: getBodyImage(2)
                    }, {
                        value: 33,
                        symbol: getBodyImage(3)
                    }, {
                        value: 142,
                        symbol: getBodyImage(4)
                    }],
                    z: 10
                }, {
                    name: 'full',
                    type: 'pictorialBar',
                    symbolBoundingData: bodyMax,
                    itemStyle: {
                        normal: {
                            color: '#ccc'
                        }
                    },
                    data: [{
                        value: 1,
                        symbol: getBodyImage(0)
                    }, {
                        value: 1,
                        symbol: getBodyImage(1)
                    }, {
                        value: 1,
                        symbol: getBodyImage(2)
                    }, {
                        value: 1,
                        symbol: getBodyImage(3)
                    }, {
                        value: 1,
                        symbol: getBodyImage(4)
                    }]
                }]
            });
        </script>
















        <script>
            makeChart('dotted', function (echarts) {
                var bgColor = '#0f375f';
                var category = [];
                var count = 20;
                var dottedBase = +new Date();
                var lineData = [];
                var barData = [];

                for (var i = 0; i < count; i++) {
                    var date = new Date(dottedBase + 3600 * 24);
                    category.push([
                        date.getFullYear(),
                        date.getMonth() + 1,
                        date.getDate()
                    ].join('-'));
                    var b = Math.random() * 200;
                    var d = Math.random() * 200;
                    barData.push(b)
                    lineData.push(d + b);
                }

                return {
                    backgroundColor: bgColor,
                    tooltip: {
                    },
                    legend: {
                        data: ['line', 'bar'],
                        textStyle: {
                            color: '#ccc'
                        }
                    },
                    xAxis: {
                        data: category,
                        axisLine: {
                            lineStyle: {
                                color: '#ccc'
                            }
                        }
                    },
                    yAxis: {
                        splitLine: {show: false},
                        axisLine: {
                            lineStyle: {
                                color: '#ccc'
                            }
                        }
                    },
                    series: [{
                        name: 'line',
                        type: 'line',
                        smooth: true,
                        showAllSymbol: true,
                        symbol: 'emptyCircle',
                        symbolSize: 15,
                        data: lineData
                    }, {
                        name: 'bar',
                        type: 'bar',
                        barWidth: 10,
                        itemStyle: {
                            normal: {
                                barBorderRadius: 5,
                                color: {
                                    type: 'linear',
                                    x: 0,
                                    y: 0,
                                    x2: 0,
                                    y2: 1,
                                    colorStops: [
                                        {offset: 0, color: '#14c8d4'},
                                        {offset: 1, color: '#43eec6'}
                                    ]
                                }
                            }
                        },
                        data: barData
                    }, {
                        name: 'line',
                        type: 'bar',
                        barWidth: 10,
                        barGap: '-100%',
                        itemStyle: {
                            normal: {
                                color: new echarts.graphic.LinearGradient(
                                    0, 0, 0, 1,
                                    [
                                        {offset: 0, color: 'rgba(20,200,212,0.5)'},
                                        {offset: 0.2, color: 'rgba(20,200,212,0.2)'},
                                        {offset: 1, color: 'rgba(20,200,212,0)'}
                                    ]
                                )
                            }
                        },
                        z: -12,
                        data: lineData
                    }, {
                        name: 'dotted',
                        type: 'pictorialBar',
                        symbol: 'rect',
                        itemStyle: {
                            normal: {
                                color: bgColor
                            }
                        },
                        symbolRepeat: true,
                        symbolSize: [12, 4],
                        symbolMargin: 1,
                        z: -10,
                        data: lineData
                    }]
                };
            });

        </script>












    </body>
</html>